UIStatusBarの高さについてのバッドノウハウ


概要

UIStatusBarの高さについて、奴ら(Apple)はどの瞬間にめり込むつもりなのか、探ってみた。



以下とりとめのないメモ


WindowaddSubすると、めり込む

のは、単純にbarの分の高さを計算して置かないから。

正し、多層的にVIewを置いて、その上で回転したいケース、っていうのは発生する。

NavigationControllerとかは、その辺の高さを読む訳で、

これは勝手に読んでいる。

なので、自前のViewControllerとかに置くと、高さが足された状態で出力される。



解決策は、

X・NavBarの高さを取得して予めBaseをめり込ませておく

▲・特定のViewをaddする場合、追加後にframeを特定の位置に動かす

・共通タイミングを割り出して何かする

・その一瞬だけアプリの状態を変える

・取得を遮る

・デフォルトを弄っておき、コード中で変化させる(ファイルを見てるならこれで対処できる)

スクリーンショット 2013-01-02 18.42.40.png

からの、

[[UIApplication sharedApplication] setStatusBarHidden:NO];

で、初期化タイミングを跨いだらOKだった。


タイミングより前だとどうなる?


インスタンス化前:アウト

addSubview前:アウト

addSubview後:OK

addSubviewの前に解放すると駄目だけど、後に解放するならOK、と。ふむ、、


ViewDidLoad後:アウト

ViewWillAppear後:アウト

ViewDidAppear後:OK


この隙間。

ViewDidAppear super前:OK

なので、ViewWillAppearでバーの存在をうやむやにすれば、行ける。


ViewWillAppearとViewDidAppearの間なので、ViewWillでhidden:YES、

ViewDidでhidden:NOとすると、何とかなる。


すげーーーーーー絶対のバッドノウハウだコレ。